<?php


namespace App\store\services;


use App\store\models\SettleApplyModel;

class CommonServices
{
    /**
     * 业务模块
     * @return array
     */
    const file_data = [
        '100' => 'test', // 测试
        '101' => 'goods', // 商品
        '102' => 'orders', // 订单
        '103' => 'store', // 店铺
        '104' => 'user', // 用户
        '105' => 'common', // 公共
        '106' => 'draw', // 抽奖
        '107' => 'config', // 配置
        '108' => 'retail', // 分销
    ];

    /**
     * 创建 随机数字字母验证码
     * @param $type   //类型
     * @param $length //长度
     * @return array
     */
    public static function captcha($type=1, $length=4)
    {
        switch ($type) {
            case 1://数字
                $arr = str_shuffle(implode(range(0,9)));
                $captcha_word = substr($arr,0,$length);
                break;
            case 2://数字+字母
                $arr = array_merge(range(0,9),range('a','z'),range('A','Z'));
                $arr = str_shuffle(implode($arr));
                $captcha_word = substr($arr,0,$length);
                break;
            case 3://字母
                $arr = array_merge(range('a','z'),range('A','Z'));
                $arr = str_shuffle(implode($arr));
                $captcha_word =  substr($arr,0,$length);
                break;
            default:
                $captcha_word = '';
        }

        return $captcha_word;
    }

    /**
     * 上传图片视频业务逻辑
     * @param $data array //请求参数数组
     * @param $file string   //文件操作
     * @return array
     */
    public static function uploads($data, $file)
    {
        if (empty($data) && $data == false) {
            return ['msg' => '参数数据不能为空'];
        }

        if (!isset($file)) {
            return ['msg' => '文件数据不存在'];
        }

        if (!isset($data['file_id'])) {
            return ['msg' => '业务类型ID不能为空'];
        }

        $file_id = $data['file_id'];
        $file_arr = self::file_data;
        if (!isset($file_arr[$file_id])) {
            return ['msg' => '业务类型ID不存在'];
        }
        $file_name = $file_arr[$file_id];

        if ($data['type'] == 1) {
            // 构建存储的文件夹规则，值如：uploads/images/avatars/201709
            $folder_name = "uploads/images/" . date("Ymd", time())."/{$file_name}";
            // 文件具体存储的物理路径，`public_path()` 获取的是 `public` 文件夹的物理路径。
            $upload_path = public_path() . '/' . $folder_name;
            // 获取文件的后缀名，因图片从剪贴板里黏贴时后缀名为空，所以此处确保后缀一直存在
            $img_name = $_FILES["file"]["name"];
            $img_arr = explode('.', $img_name);
            $extension = $img_arr[1];
            // 如果上传的不是这种图片格式将终止操作
            if (!in_array($extension, ["png", "jpg", "gif", "jpeg"])) {
                return ['msg' => '该文件不是图片类型'];
            }
            $filename = 'IMG_' . time() . '_' . rand(0, 1000000) . '.' . 'png';
            // 将图片移动到我们的目标存储路径中
            $file->move($upload_path, $filename);
        } else if($data['type'] == 2) {
            // 构建存储的文件夹规则，值如：uploads/images/avatars/201709
            $folder_name = "uploads/video/" . date("Ymd", time())."/{$file_name}";
            // 文件具体存储的物理路径，`public_path()` 获取的是 `public` 文件夹的物理路径。
            $upload_path = public_path() . '/' . $folder_name;
            // 获取文件的后缀名，因图片从剪贴板里黏贴时后缀名为空，所以此处确保后缀一直存在
            $video_name = $_FILES["file"]["name"];
            $video_arr = explode('.', $video_name);
            $extension = $video_arr[1];
            // 如果上传的不是这种图片格式将终止操作
            if (!in_array($extension, ["mp4", "mpg", "avi", "wmv", "mov"])) {
                return ['msg' => '该文件不是视频类型'];
            }
            $filename = 'VIDEO_' . time() . '_' . rand(0, 1000000) . '.' . 'mp4';
            // 将图片移动到我们的目标存储路径中
            $file->move($upload_path, $filename);
        } else {
            return [];
        }

        $data = ['url' => "/$folder_name/$filename"];
        return $data;
    }

    /**
     * 商户-入驻申请
     * @param $data //请求参数数组
     * @return array
     */
    public static function settleApply($data)
    {
        if (empty($data) && $data == false) {
            return [];
        }

        if (isset($data['captcha'])) {
            // 校验验证码逻辑...
            unset($data['captcha']);
        }

        $data = SettleApplyModel::saved($data);
        if (!$data) {
            errorJson('保存数据失败！', []);
        }
        return [];
    }

}
